package www.com.library.util;

import android.text.TextUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 字符串工具类
 * @author Gavin.guo
 */
public class StringUtils {
	public static final String  NA_MSG ="---";

	/**
	 * 字符串数组中是否包含某字符串
	 * @param source   			判定的字符串
	 * @param dest     			字符串数组
	 */
	public static boolean isHasStrInArray(String source ,ArrayList<String> dest){
		if(null == dest || dest.size() == 0){
			return false;
		}
		return dest.contains(source);
	}
	
	/**
	 * 将字符串数组转换成list
	 * @param strArr
	 * @return
	 */
	public static List<String> convertStringArrToList(String[] strArr){
		List<String> returnList = new ArrayList();
		if(strArr != null && strArr.length > 0){
			for(String arr : strArr){
				returnList.add(arr);
			}
		}
		return returnList;
	}

	public static double toDouble(String data) {
		double dRet = 0.0;
		data = data.replace(",", "");
		try {
			if (data == null || data.compareTo("") == 0) {
				dRet = 0.0;
			} else {
				dRet = Double.parseDouble(data);
			}
		} catch (Exception ex) {
			return 0.0;
		}
		return dRet;
	}

	
	/**
	 * 删除字符串数组中空的项
	 * @return
	 */
	public static ArrayList<String> removeNullStrInStrArr(String[] strArr){
		ArrayList<String> newStrArr = new ArrayList();
		if(strArr != null && strArr.length > 0){
			int len = strArr.length;
			for(int i=0;i<len;i++){
				if(null != strArr[i] && !"".equals(strArr[i])){
					newStrArr.add(strArr[i]);
				}
			}
		}
		return newStrArr;
	}
	

	/**
	 * 判断某字符串是否是数字
	 * @param str  某字符串
	 * @return true 数字  false 非数字
	 */
	public static boolean isDigit(String str){
		if(str == null || str.isEmpty()){
			return false;
		}
		return str.matches("[0-9]*");
	}
	
	/**
	 * 判断是否指定长度的数字
	 * @param str  某字符串
	 * @return  true 小于指定长度  false 不小于指定长度
	 */
	public static boolean isSpecifiedLenDigit(String str,int len){
		if(isDigit(str)){
			return str.length() == len;
		}
		return false;
	}
	
	/**
	 * 如果当前整数在0-9之间，在前面加上0
	 * @param data 当前整数
	 */
	public static String addZero(int data){
		if(data >=0 && data <=9){
			return "0"+data;
		}
		return String.valueOf(data);
	}
	
	/**
	 * 判断字符串是否为空
	 * @param value
	 * @return
	 */
	public static boolean isEmpty(Object value){
		if (value == null || value.equals("")){
			return true;
		}else{
			if(value.toString().trim().equals(""))	return true;
		}
				
		return false;
	}

	/**
	 * 判断是否是正确的手机号码
	 * @param mobile
	 * @return
     */
	public static boolean isMobileNum(String mobile) {
		/*
    移动：134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
    联通：130、131、132、152、155、156、185、186
    电信：133、153、180、189、（1349卫通）
    总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
    */
		String telRegex = "(^[0-9]{11})$|(^86(-){0,3}[0-9]{11})$";//"[1]"代表第1位为数字1，"[358]"代表第二位可以为3、5、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
		if (TextUtils.isEmpty(mobile)) return false;
		else return mobile.matches(telRegex);
	}

	/**
	 * 字母排序法
	 *
	 * @param str1
	 * @param str2
	 * @return
	 */
	public static int sortPro(String str1, String str2) {
		char[] char1 = str1.toCharArray();
		char[] char2 = str2.toCharArray();
		int count = 0;
		if (char1.length < char2.length) {
			count = char1.length;
		} else {
			count = char2.length;
		}
		for (int i = 0; i < count; i++) {
			if (sortA(char1[i], char2[i]) == 0) {
				continue;
			} else {
				return sortA(char1[i], char2[i]);
			}
		}

		return -1;
	}

	private static int sortA(char char1, char char2) {
		if (char2 > char1) {
			return 1;
		} else if (char2 == char1) {
			return 0;
		} else {
			return -1;
		}
	}
}
